<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<script type="text/javascript">

    function Person0 (name, age, gender) {
        this.name = name
        this.age = age
        this.gender = gender
        // 每个方法都要在这个实例中重新创建一遍
        this.sayName = new Function("console.log(this.name)")
    }
    /*优化*/
    // 将sayName的定义移除到构造函数外部，sayName方法包含的就是一个指向全局sayName函数的指针
    // 但是如果构造函数中有许多方法，就需要很多全局函数，而且全局作用域没什么用
    function sayName () {
        console.log(this.name)
    }
    function Person (name, age, gender) {
        this.name = name
        this.age = age
        this.gender = gender
        // 每个方法都要在这个实例中重新创建一遍
        this.sayName = sayName
    }
    var bajie = new Person('八戒', '500', '男')
    bajie.sayName()

</script>

</body>
</html>
